console.log(Object.prototype.toString.call('string'))                       // [object String]
console.log(Object.prototype.toString.call(12345678))                       // [object Number]
console.log(Object.prototype.toString.call(true))                           // [object Boolean]
console.log(Object.prototype.toString.call(null))                           // [object Null]
console.log(Object.prototype.toString.call(undefined))                      // [object Undefined]
console.log(Object.prototype.toString.call({}))                             // [object Object]
console.log(Object.prototype.toString.call([]))                             // [object Array]
console.log(Object.prototype.toString.call(function(){}))                   // [object Function]
console.log(Object.prototype.toString.call(new Date()))                     // [object Date]
console.log(Object.prototype.toString.call(/^$/))                           // [object RegExp]
console.log(Object.prototype.toString.call(Symbol('A')))                    // [object Symbol]
console.log(Object.prototype.toString.call(new Error()))                    // [object Error]
console.log(Object.prototype.toString.call(new Map()))                      // [object Map]
console.log(Object.prototype.toString.call(new Set()))                      // [object Set]
console.log(Object.prototype.toString.call(new WeakMap()))                  // [object WeakMap]
console.log(Object.prototype.toString.call(new WeakSet()))                  // [object WeakSet]
console.log(Object.prototype.toString.call(new Promise(()=>{})))            // [object Promise]
console.log(Object.prototype.toString.call(new Int8Array()))                // [object Int8Array]
console.log(Object.prototype.toString.call(new Uint8Array()))               // [object Uint8Array]
console.log(Object.prototype.toString.call(new Uint8ClampedArray()))        // [object Uint8ClampedArray]
console.log(Object.prototype.toString.call(new Int16Array()))               // [object Int16Array]
console.log(Object.prototype.toString.call(new Uint16Array()))              // [object Uint16Array]
console.log(Object.prototype.toString.call(new Int32Array()))               // [object Int32Array]
console.log(Object.prototype.toString.call(new Uint32Array()))              // [object Uint32Array]
console.log(Object.prototype.toString.call(new Float32Array()))             // [object Float32Array]
console.log(Object.prototype.toString.call(new Float64Array()))             // [object Float64Array]
console.log(Object.prototype.toString.call(new BigInt64Array()))            // [object BigInt64Array]
console.log(Object.prototype.toString.call(new BigUint64Array()))           // [object BigUint64Array]
console.log(Object.prototype.toString.call(new ArrayBuffer(0)))             // [object ArrayBuffer]
